package day14.pack1;

public class Test3 {
    public static void main(String[] args) {

//        MyList<User> list1 = new MyList<>();
//        say1(list1);
//        MyList<Double> list2 = new MyList<>();
//        say2(list2);
//        MyList<Object> list3 = new MyList<>();
//        say3(list3);
        MyList<B> mylist = null;
        say2(mylist);
    }

    /**
     * 不界定
     * 不限制<?>泛型的类型
     * @param list
     */
    public static void say1(MyList<?> list) {

    }

    /**
     * 向下界定
     * 限定Number或其子孙类型
     * @param list
     */
    public static void say2(MyList<? extends B> list) {}

    /**
     * 向上界定
     * 匹配的泛型类型为Number或其长辈类
     * @param list
     */
    public static void say3(MyList<? super B> list) {}
}
class A {

}
class B extends A {}

class C extends B {

}
